home *** CD-ROM | disk | FTP | other *** search
- Unit DiskDlg;
-
- INTERFACE
- uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem,
- DataObj, WaveUtil, WAVEIO;
-
- const
- dn_DiskDlg = 'DiskDlg';
-
- DS_OK = ID_Ok;
- DS_Cancel = 2;
-
- ID_DInput = 1500;
- ID_DMedInf= 1501;
- ID_DinDB = 1502;
- ID_DRetry = 1503;
- ID_DName = 1504;
- ID_DSDir = 1505;
- ID_DLabl = 1506;
-
- type
- PDiskDlg = ^TDiskDlg;
- TDiskDlg = object(TDialog)
- CurrCollect : PWaveCollection;
- CurrNr : Integer;
- CurrWD : WaveDataType;
- constructor Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
- Procedure HandlePathInDB(VAR Msg : TMessage);virtual id_First + id_DinDB;
- PROCEDURE OK(VAR Msg : TMessage);Virtual id_First + id_Ok;
- procedure Cancel(var Msg: TMessage); virtual id_First + id_Cancel;
- procedure SetupWindow; virtual;
- end;
-
- PDiskPlay = ^TDiskPlay;
- TDiskPlay = Object(TWindowsObject)
- DiskDlgMessage : Integer;
- DiskDummy : Array[0..130] OF CHar;
- DiskTestDlg : Integer;
- DiskDialog : PDiskDlg;
- Constructor Init(AParent : PWindowsObject);
- PROCEDURE DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
- END;
-
- VAR
- DPlayObj : PDiskPlay;
- {DiskDlgMessage : Integer;}
- DiskDummy : Array[0..130] OF CHar;
- DiskTestDlg : Integer;
- DiskDialog : PDiskDlg;
- DiskIntoDataBase : BOOLEAN;
- NewWaveDummy : WaveDataType;
-
- implementation
-
- Constructor TDiskPlay.Init(AParent : PWindowsObject);
- BEGIN
- TWindowsObject.Init(AParent);
- DiskDlgMessage := idOK;
- END;
-
- PROCEDURE TDiskPlay.DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
- VAR
- TDummy, MDummy : ARRAY[0..100] OF CHAR;
- DDialog : PDiskDlg;
- TestDlg : Integer;
- BEGIN
- {DiskDlgMessage := idOK;}
- TDummy[0] := CurrWD.DiskDrive;
- TDummy[1] := #0;
- StrCat(TDummy, ':');
- StrCat(TDummy,CurrWD.PathName);
- StrCat(TDummy,CurrWD.FileName);
- {WriteLn(TDummy);}
- While ((DiskDlgMessage = DS_Ok) AND (Not(WAVExists(TDummy)))) DO BEGIN
- DDialog := New(PDiskDlg, Init(@self, dn_DiskDlg, CurrWD));
- {IF DDialog <> NIL THEN}
- TestDlg := Application^.ExecDialog(DDialog);
- IF TestDlg = id_OK THEN
- BEGIN
- TDummy[0] := CurrWD.DiskDrive;
- TDummy[1] := #0;
- StrCat(TDummy, ':');
- StrCat(TDummy,CurrWD.PathName);
- StrCat(TDummy,CurrWD.FileName);
- {WriteLn('In program : ',TDummy);}
- END
- ELSE IF TestDlg = id_Cancel THEN BEGIN
- DiskDlgMessage := id_Cancel;
- END;
- END;
- Mess := DiskDlgMessage;
- END;
-
- constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
- {constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection; ANum : Integer);}
- begin
- TDialog.Init(AParent, AName);
- {
- CurrCollect := ACollect;
- CurrNr := ANum;
- PWaveData(CurrCollect^.At(CurrNr))^.GetData(CurrWD);
- }
- CurrWD := AWaveDummy;
- DiskIntoDataBase := FALSE;
- { DiskDlgMessage := idOK;}
- end;
-
- procedure TDiskDlg.SetupWindow;
- VAR
- Msg : TMessage;
- TDummy : Array[0..100] OF Char;
- begin
- TDialog.SetupWindow;
-
- TDummy[0] := WaveDummy.DiskDrive;
- TDummy[1] := #0;
- StrCat(TDummy, ':');
- SetDlgItemText(HWindow, ID_DMedInf, TDummy);
- StrCat(TDummy,WaveDummy.PathName);
-
- SendDlgItemMessage(HWindow, id_DInput, em_LimitText, Sizeof(DirStr)+2, 0);
-
- SetDlgItemText(HWindow, ID_DInput, TDummy);
- SetDlgItemText(HWindow, ID_DSDir, TDummy);
- StrCat(TDummy,CurrWD.FileName);
- SetDlgItemText(HWindow, ID_DName, CurrWD.FileName);
- SetDlgItemText(HWindow, ID_DLabl, CurrWD.DiskLabel);
- end;
-
- procedure TDiskDlg.Cancel(var Msg: TMessage);
- BEGIN
- DiskIntoDataBase := FALSE;
- TDialog.Cancel(Msg);
- END;
-
- procedure TDiskDlg.HandlePathInDB(var Msg: TMessage);
- VAR
- SplitChars : DirStr;
- Dummy : DirStr;
- FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
- Count : Integer;
- OldComment : ARRAY[0..63] OF CHAR; { WAV comment }
- BEGIN
- GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStr));
- if SplitChars[StrLen(SplitChars)-1] <> '\' then StrCat (SplitChars,'\');
-
- StrCopy(OldComment,WaveDummy.FileComment);
- {
- WriteLn('--------------------------------------------------');
- WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
- WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
- WriteLn(' Comm : ', WaveDummy.FileComment);
- }
-
- WD_ReadOneFileIntoWD(HWindow,SplitChars,WaveDummy.FileName,WaveDummy);
-
- IF WaveDummy.Save2Wave = C2W_DontSave THEN StrCopy(WaveDummy.FileComment,OldComment);
- {
- WriteLn('+++++++++++++++++++++++++++++++++++++++++++++++++++++++');
- WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
- WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
- WriteLn(' Comm : ', WaveDummy.FileComment);
- }
-
-
- DiskIntoDataBase := TRUE;
- TDialog.OK(Msg);
- END;
-
- PROCEDURE TDiskDlg.OK(VAR Msg : TMessage);
- VAR
- SplitChars : ARRAY[0..SizeOf(DirStr)+2] OF CHAR;
- FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
- Count : Integer;
- BEGIN
- GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStrP2));
- FileSplit(SplitChars, FPath, FNam, FExt);
- {
- WriteLn('Path : ',FPath);
- WriteLn('Name : ',FNam);
- WriteLn('Ext : ',FExt);
- }
- IF (StrLen(SplitChars) >= 3) AND (SplitChars[1] = ':') AND (SplitChars[2] = '\') THEN BEGIN
- IF StrRScan(SplitChars, '\') = NIL THEN StrCat(SplitChars,'\');
- WaveDummy.DiskDrive := SplitChars[0];
- FOR COunt := 0 to 129 do WaveDummy.PathName[Count] := #0;
- For Count := 2 to StrLen(FPath) DO BEGIN
- WaveDummy.PathName[Count-2] := FPath[Count];
- {WriteLn('Wavedummy : ',WaveDummy.PathName[2-Count],' FPath : ',FPath[Count],' gesamt : ',WaveDummy.PathName);}
- END;
- END;
- {DiskDlgMessage := DS_Ok;}
-
- {WriteLn('In record : ',WaveDummy.PathName);}
- DiskIntoDataBase := FALSE;
- TDialog.OK(Msg);
- END;
-
- BEGIN
- END.
-